---
title: "Event Types"
description: "List of the supported webhook types"
icon: "globe"
---

`conversation.started`

This event is triggered when a new conversation is started, regardless of the channel.

<Accordion title="Sample Payload">
```typescript
{
  event: 'conversation.started';
  organization_id: string;
  data: {
    conversation_id: string;
    assignee:
    | {
      type: 'AI';
      name: string;
    }
    | {
      id: string;
      type: 'human';
      name: string;
      avatar_url: string;
    };
    contact: {
      id?: string;
      name?: string;
      enriched_data?: {
        address?: string | null;
        phone_number?: string;
        email?: string;
      };
      custom_objects?: object;
    };
    channel: 'web' | 'email' | 'phone';
    first_message: string;
    timestamp: string;
  };
}
```
</Accordion>

---

`conversation.closed`

This event is triggered when a conversation is closed, a conversation can be marked as resolved or not resolved, and can be closed by a human or an AI.

<Accordion title="Sample Payload">
```typescript
{
    event: "conversation.closed";
    organization_id: string;
    data: {
        conversation_id?: string;
        timestamp: string;
        contact_id?: string;
        resolution_status: "resolved" | "not_resolved";
        resolution_type?: "light" | "hard" | "auto_handoff";
        closed_by:
        | {
            type: "AI";
            name: string;
        }
        | {
            id: number;
            type: "human";
            email: string;
        };
        is_from_third_party: boolean;
        third_party_name: "zendesk" | "intercom" | null;
        summary: string | null | undefined;
        contact_reason: string | null | undefined;
        user_sentiment: string | null | undefined;
        language: string | null | undefined;
        message_count: number;
    }[];
}
```
</Accordion>
-----

`conversation.handoff_to_human`

This event is triggered when a conversation is handed off to a human agent. Note that a handoff event can happen for multiple reasons; for example, a human agent might decide to take over the conversation, or the AI might decide to hand off the conversation to a human agent.

<Accordion title="Sample Payload">
```typescript
{
    event: "conversation.handoff_to_human";
    organization_id: string;
    data: {
        conversation_id: string | null | undefined;
        timestamp: string;
        customer_id: string | null | undefined;
        reason:
        | "ai_decided_to_handoff_the_conversation" 
        | "ai_is_forbidden_from_handling_this_topic" 
        | "human_agent_decided_to_take_over" 
        | "ai_decided_to_handoff_because_the_user_left";
        summary: string;
        contact_reason?: string;
        user_sentiment?: string;
        was_handedoff_to_third_party?: boolean;
        third_party_name?: "zendesk" | "intercom" | null;
        integration_metadata?: {
           sunshine?: {
             sunshine_conversation_id: string;
           };
        };
        language: string | null | undefined;
        message_count: number;
    }[];
}
```
</Accordion>

---

`conversation.third_party_agent_response`

When a third-party software agent responds to a previously handed-off conversation, Open will notify you. In some configurations, Open might also initiate the handoff to a third-party agent, such as Zendesk or Intercom. Even while the third-party agent handles the conversation, Open continues to monitor and send events to your webhooks.

<Accordion title="Sample Payload">

```typescript
{
  event: 'conversation.third_party_agent_response';
  organization_id: string;
  data: {
    conversation_id: string | null | undefined;
    timestamp: string;
    customer_id: string | null | undefined;
    third_party_name: 'zendesk' | 'intercom';
    response: string;
    message_count: number;
    language: string;
  };
}
```
</Accordion>

